Skip to content

Add Code OSS browser and native desktop compatibility - #76

Draft
wieslawsoltes wants to merge 5 commits into
mainfrom
feature/code-oss-browser-compatibility
Draft

wieslawsoltes wants to merge 5 commits into
mainfrom
feature/code-oss-browser-compatibility

Conversation

@wieslawsoltes

@wieslawsoltes wieslawsoltes commented Sep 15, 2026

Copy link
Copy Markdown
Collaborator

Active implementation checkpoint — 20 September 2026

One-agent mode is active. Current merged source heads are AppScene 5a0d9a99534f8b7ea34b4896d484f4b7103aafb4, WebScene 98077f23b1776459dab7e23744fe6be7b26599f0, and unchanged Code OSS 645f29cc3176500b4b5762ba887cf2a7f0ffdf2c. Local vscode-demo is 0a04a886; it remains intentionally unpushed with Actions disabled.

Latest merged focused stack

Current Release evidence

The newest complete bundle is dist/appscene-release-5a0d9a9-bd36683-mcp/Code OSS AppScene.app. Its installed SDK runtime is AppScene 52c3f302 / WebScene bd366836; it is 697,606,166 logical bytes, 743,186,432 allocated bytes, and 16,067 entries. Executable SHA-256 is 6ea620e629bcaba8543ff309bc9cea3392ec2a86eee4092ba749f7e783aed690.

It passes native workbench/editor rendering, edit and undo, editor Worker RPC, extension-host iframe/MessagePort initialization, server-cookie handling, first-pass MCP password input, and encrypted secret-key persistence. Its reload pass reproduces the lifecycle failure fixed by #874. Local vscode-demo commit c629a52e also preserves the remote workspace URI when reopening the saved MCP input and reports interaction failures immediately. A single rebuild from the new merged runtime is required to finish this gate.

Open PRs and stack status

Authored open issue inventory and remaining order

There are 39 authored open WebScene issues and 15 authored open AppScene issues, including tracking epics. Most already contain merged implementation and await exact-package acceptance; the remaining source-heavy areas are Inspector parity, Linux/Windows Runtime/RID publication, microphone/audio, terminal latency, and defects exposed by package gates.

  1. Produce one exact installed SDK/CLI Release from AppScene 5a0d9a9 and WebScene 98077f23; complete MCP reopen, lifecycle, zero-browser, signing, and bundle/disk gates.
  2. Re-run folder/Explorer timing and watcher acceptance (Qualify remote workspace bootstrap, Explorer contents, and watcher refresh #252/Remove fixed delay from remote filesystem provider responses #280 and AppScene Make transition frame-demand test deterministic #131), then file open/edit/save/revert/hot-exit (Implement File System Access pickers and handles over AppScene native panels #248/Qualify VS Code file edit, save, revert, and hot-exit recovery #269 and AppScene Isolate logical inset transition test time #122).
  3. Run Markdown/webview ([Epic] Qualify unchanged Code OSS webviews and nested document contexts #264/Enforce secure nested-document lifecycle for Code OSS webviews #267/Complete nested-webview interaction, find, focus, and accessibility handoff #268), terminal Bound and reduce VS Code integrated-terminal open-to-prompt latency #244, visual/geometry Establish Chromium/AppScene visual and geometry regression gates for unchanged Code OSS #259, workbench/Chat Qualify all unchanged Code OSS workbench commands, panels, and feature lifecycles #260/Qualify Code OSS Chat and auxiliary-bar interaction, streaming, and lifecycle #261, accessibility Qualify Code OSS accessibility semantics, keyboard navigation, and native exposure #262, CSS epic [Epic] CSS features, compatibility, validation, and performance #235, WPT/API Publish a Code OSS Web API capability ledger and expand WPT coverage #263, and performance Profile unchanged VS Code CSS and visual-tree workloads with bounded performance gates #243 gates. Fix the earliest reusable AppScene/WebScene failure in a focused PR and merge after its related gate.
  4. Publish and qualify Linux and Windows installed Runtime/SDK packages under WebScene [Epic] Restore full V8 Linux and Windows package portability #687/Publish installed full-V8 Runtime components for Linux and Windows #809 and AppScene Add TransformStream resource fallback #304/Implement effective CSS property cascade semantics #305/Make retained inset parsing portable on macOS #306/Split IndexedDB bootstrap below the MSVC literal limit #307/Preserve unitless line height for generated content #322/Bound CSS work during cascade replay #346, using the Ubuntu and Windows VMs for final platform evidence.
  5. Keep all three consolidation PRs open until unchanged Code OSS passes the complete release matrix.

Scope

Consolidated review surface for generic WebScene capabilities needed by unchanged Code OSS. Focused implementations land on WebScene main first. Keep this PR open and unmerged until final integration promotion.

@wieslawsoltes
wieslawsoltes force-pushed the feature/code-oss-browser-compatibility branch 2 times, most recently from 9d57164 to 1ede308 Compare September 15, 2026 09:52
@wieslawsoltes
wieslawsoltes force-pushed the feature/code-oss-browser-compatibility branch 9 times, most recently from 8955e9e to 41cf43c Compare September 15, 2026 11:14
@wieslawsoltes
wieslawsoltes force-pushed the feature/code-oss-browser-compatibility branch from cfccdbf to 61ea9d4 Compare September 15, 2026 12:26
@wieslawsoltes wieslawsoltes changed the title Move Code OSS browser compatibility into WebScene Add Code OSS browser and native desktop compatibility Sep 15, 2026
@wieslawsoltes

Copy link
Copy Markdown
Collaborator Author

Full macOS arm64 Release distribution qualification at AppScene e9fd26777747adfda5fadd571b0b5c73412dfe67 / WebScene b639b4c49985891c2521421229a2f22e976ead2c:

  • CMake Release app editor smoke: 8.041 s, exit 0, executable SHA-256 678b9106885e42ad37fe1db03d22cf32d1f2027387ab262899950138acec6e99.
  • Distribution app editor smoke after audit/re-signing: 8.127 s, exit 0, executable SHA-256 772824a2491f1e4d9edaea095a1e5ca67a75b58e1bca30c39cb0f1671c19b0bd.
  • ZIP: 267,696,685 bytes, SHA-256 7fcf191a381d67054a5dbe70fd842739e9c8e508b852f4c59ffb4b7c0bdac8ab.
  • DMG: 327,921,410 bytes, SHA-256 48b85d5747735d1e85072915496b7119938f6acdbdd2ee74f6c67b205357fdb4.
  • The packager audited 27 arm64 Mach-O files. Deep code-sign, DMG verification, and every SHA256SUMS entry pass.
  • The complete final WebScene hosted/native/package/consumer matrix and AppScene portable PR matrix are green.

The package is retained locally only. Both PRs remain draft, open, and unmerged; the parent integration branch remains unpushed.

@wieslawsoltes

Copy link
Copy Markdown
Collaborator Author

Release validation for current head 31e3d8ad:

  • Deterministic public-ABI before/after: retained b639b4c4 exits 139 when destroyed with a pending legacy-copy request and matches all eight Code OSS crash offsets; the current package exits 0.
  • macOS packaged dylib/dSYM UUID: A8A72CF9-8783-3C1E-A89D-02369DB0CC1E; compressed symbol artifact 5,352,939 bytes, three-day retention.
  • Green: hosted macOS/Ubuntu/Windows, both macOS NativeAOT versions, Windows NativeAOT, Linux native contracts, macOS/Linux/Windows packages and consumers, cross-RID required/candidate evidence, and release-set verification.
  • Rebuilt Code OSS/AppScene editor smoke passes in 4.478 seconds; separately signed distribution smoke passes in 8.651 seconds; deep signature, 27-Mach-O audit, ZIP/DMG/checksums, and size budgets pass.
  • Real Monaco copy and normal close pass without the prior worker crash. The real Monaco paste copyback mismatch remains documented in Add a bounded async Clipboard API host ABI for native runtimes #86 and must be fixed before the clipboard feature is fully qualified.

Keep this PR draft/open and unmerged while #86, #81, #56, and #83 remain on the consumer critical path.

@wieslawsoltes

Copy link
Copy Markdown
Collaborator Author

Paste compatibility update: commit 9b9a17d fixes the empty Code OSS paste path by exposing clipboard string representations through an iterable DataTransferItemList subset. The regression test consumes each item through asynchronous getAsString(), matching VS Code's toVSDataTransfer implementation.

Local validation: WebScene.Architecture.Tests 26/26 passed. I will rebuild and manually validate the complete AppScene Code OSS release after all native runtime/package/consumer jobs pass.

@wieslawsoltes

Copy link
Copy Markdown
Collaborator Author

Qualification update for 9b9a17d:

  • The complete WebScene CI matrix is green, including all three native packages, cross-RID evidence/release-set verification, and installed consumers.
  • The rebuilt Code OSS/AppScene Release editor smoke passes in 4.029 s.
  • Two Release-build and one separately signed distribution computer-use runs pass real Monaco typing, byte-exact OS copy, byte-exact OS paste/copyback, all 88 input records accepted, normal close, and exit 0.
  • ZIP/DMG/checksums, deep signing, 27 arm64 Mach-O audit, and size budgets pass.
  • Runtime UUID: A5D0DFD7-6BC8-3B61-A249-31319C6BE186.

Keep this PR draft, open, and unmerged while the other consumer gaps remain.

@wieslawsoltes

Copy link
Copy Markdown
Collaborator Author

Performance timeline update: 290b9b8 fixes #83 by supplying a stable numeric performance.timeOrigin and removing the temporary non-retaining mark/measure methods. The retained timeline is installed before later browser compatibility scripts in both main and iframe realms.

The regression mirrors Code OSS's environment selection and immediate didStartWorkbench measure. Native tests additionally cover captured free-function calls, method/query identity, wall-clock alignment, and read-only origin after snapshot hydration. Local RuntimeCompatibility passes 25/25 with 50,000 marks in 43.75 ms; Architecture passes 26/26. Cross-platform package CI is running.

@wieslawsoltes

Copy link
Copy Markdown
Collaborator Author

Current integration head: 5baf7e5.

This branch now includes merged main/PR #71 and keeps Code OSS in Full JavaScript mode. New work since 9b9a17d:

Local gates: RuntimeCompatibility 25/25; architecture 29/29; precompiled Python/CMake 17/17; parent packaging/SDK/smoke 46/46. The 50,000-mark gate completed in 32.12 ms under its 1.5 s budget.

A clean Code OSS 1.137.0 production rebuild and Release package passed:

  • editor smoke 7.097 s with no missing-mark exception;
  • manual real-Monaco input/copy/paste/copy-back/normal-close 11.32 s, 184/184 inputs accepted;
  • 27 arm64 Mach-O dependency and minimum-OS audits;
  • deep signature, ZIP, DMG, manifest, and checksum validation.

The preceding 59c3e09 CI/native-Linux/precompiled workflows and macOS package job passed. Its package run was cancelled after local integration exposed a 26.5 inherited deployment minimum. Exact-head 5baf7e5 precompiled checks pass; CI/package/native-Linux remain queued without job allocation because the required self-hosted Linux runner is unavailable. Keep this PR draft and unmerged.

@wieslawsoltes

Copy link
Copy Markdown
Collaborator Author

Implemented at 0f3a320e12c8cc716c8818e8ef5654054477df31 and pushed to draft PR #76.

The native paste path now requests all supported representations and exposes returned images as browser-shaped file items:

  • DataTransferItem.kind === "file"
  • exact host MIME type
  • getAsFile() returns a WebScene File
  • DataTransfer.files contains the file
  • DataTransfer.types contains Files
  • File.arrayBuffer() preserves the host bytes
  • unsupported returned MIME types reject with NotSupportedError
  • readText() rejects a non-text result with DataError

Local WebScene gates passed:

  • full native V8 runtime suite
  • RuntimeCompatibility: 25/25
  • Architecture: 29/29
  • exact 68-byte PNG signature/file metadata regression
  • maximum 16 MiB image paste: 0.157494 s (5 s budget)
  • typed maximum 16 MiB clipboard: 0.108963 s
  • typed clipboard 10,000 operations: 0.0367825 s
  • legacy clipboard 10,000 operations: 1.90916 s

The production Code OSS 1.137.0 package built from this runtime also passed macOS computer use through the real unchanged workbench. NSPasteboard -> AppScene -> typed WebScene ABI -> paste delivered:

{"status":"passed","kind":"file","type":"image/png","name":"clipboard.png","size":68,"byteLength":68,"first":137,"last":130,"fnv1a32":1588682394,"itemCount":1,"fileCount":1,"types":["Files"]}

The same signed bundle passed editor render/edit/undo in 7.077 s, text keyboard/copy/paste in 11.308 s with 88/88 inputs accepted, image paste in 6.452 s, normal close, the 27-Mach-O dependency/signature audit, ZIP extraction verification, and DMG verification.

Issue acceptance remains open until the new exact-head cross-platform CI matrix is green.

@wieslawsoltes

Copy link
Copy Markdown
Collaborator Author

Current consolidation head: b8785dd06c324e25e7caa9b40547e87c79e60302.

This head retains the real Code OSS iframe Worker fix and adds:

  • d807f7ab: makes the detached-iframe regression timing-safe by counting callbacks only after the synchronous removeChild boundary. The prior Linux failure was a fixture race that counted a legal pre-removal MessagePort delivery. The corrected native regression passed 10/10 repeats, graphics CTest 28/28, and worker/iframe WPT 31/31.
  • 3294fa39: expands fragment attachment selector-invalidation regressions.
  • b8785dd0: expands IndexedDB snapshot and structured-data restart regressions.

The fully packaged Code OSS 1.137.0 development composite passed editor smoke, two-process IndexedDB persistence, original-browser visual parity, native keyboard/text clipboard, native PNG clipboard, and all 14 performance budgets. Key results: zero layout-geometry deltas; pixel MAE 0.004786; ready 3,227.787 ms; visible/hidden idle CPU mean 0.866%/0.105%; input p95 3.429 ms; CSS recascade p95 0.337 ms; 256-child panel attach/detach p95 8.637/0.824 ms.

The parent integration contracts pass 43/43 Node and 67/67 Python. Exact-head b8785dd0 workflows are running; keep this PR draft until the complete applicable matrix is green.

This was referenced Sep 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant